home *** CD-ROM | disk | FTP | other *** search
/ Underground / Underground CD1.iso / hack / progsy / hasla / johnr15 / RUN / JOHN.INI < prev    next >
Encoding:
INI File  |  1998-05-15  |  8.6 KB  |  424 lines

  1. #
  2. # This file is part of John the Ripper password cracker,
  3. # Copyright (c) 1996-98 by Solar Designer
  4. #
  5.  
  6. [Defaults]
  7. # Uncomment the following line to specify your default wordlist file name
  8. ;Wordfile = ~/password.lst
  9.  
  10. # "Single crack" mode rules
  11. [List.Rules:Single]
  12. # Simple rules come first...
  13. :
  14. (?acQ
  15. lQ
  16. # These were not included in crackers I've seen, but are pretty efficient
  17. # so I include them near the beginning
  18. >6'6
  19. >7l'7
  20. >6/?ul'6
  21. >5'5
  22. # Weird order, eh? Can't do anything about it, the order is based on the
  23. # number of successful cracks...
  24. <*d
  25. rc
  26. <*dMcQ
  27. >5/?ul'5
  28. uQ
  29. r(?al
  30. <*!?A[lc]p
  31. <*cQd
  32. >7/?u'7
  33. >4l'4
  34. <+(?lcr
  35. <+r(?lcr
  36. >3'3
  37. >4/?u'4
  38. >3/?ul'3
  39. uQr
  40. <*lQf
  41. # About 50% of single-mode-crackable passwords get cracked by now...
  42. >2x12
  43. >3x13
  44. >4x14
  45. >5x15
  46. >6x16
  47. >7x17
  48. >8x18
  49. >3x22
  50. >4x23
  51. >5x24
  52. >6x25
  53. >7x26
  54. >8x27
  55. >9x28
  56. >4x32
  57. >5x33
  58. >6x34
  59. >7x35
  60. >8x36
  61. >9x37
  62. >2/?ulx12
  63. >3/?ulx13
  64. >4/?ulx14
  65. >5/?ulx15
  66. >6/?ulx16
  67. >7/?ulx17
  68. >8/?ulx18
  69. >3/?ulx22
  70. >4/?ulx23
  71. >5/?ulx24
  72. >6/?ulx25
  73. >7/?ulx26
  74. >8/?ulx27
  75. >9/?ulx28
  76. >4/?ulx32
  77. >5/?ulx33
  78. >6/?ulx34
  79. >7/?ulx35
  80. >8/?ulx36
  81. >9/?ulx37
  82. # Now to the suffix stuff...
  83. <*l$[1-9!0a-z"-/:-@\[-`{-~]
  84. <*(?ac$[1-9!0a-z"-/:-@\[-`{-~]
  85. <*lr$[1-9!]
  86. <*/?au$[1-9!]
  87. <-l$!$!
  88. <-(?ac$!$!
  89. l$!<-$!$!
  90. (?ac$!<-$!$!
  91. # Removing vowels...
  92. /?v@?v>2l
  93. /?v@?v>2(?ac
  94. /?v@?v>2<*d
  95. # crack -> cracked, crack -> cracking
  96. <*l[PI]
  97. <*l[PI](?ac
  98. # mary -> marie
  99. <*(?a[lc])yro0ir$e
  100. # marie -> mary
  101. <*(?a[lc])er=1iD0o0yr
  102. # The following 3l33t rules are based on original Crack's dicts.rules
  103. l/asa4[:c]
  104. l/ese3[:c]
  105. l/lsl1[:c]
  106. l/oso0[:c]
  107. l/sss$[:c]
  108. l/asa4/ese3[:c]
  109. l/asa4/lsl1[:c]
  110. l/asa4/oso0[:c]
  111. l/asa4/sss$[:c]
  112. l/ese3/lsl1[:c]
  113. l/ese3/oso0[:c]
  114. l/ese3/sss$[:c]
  115. l/lsl1/oso0[:c]
  116. l/lsl1/sss$[:c]
  117. l/oso0/sss$[:c]
  118. l/asa4/ese3/lsl1[:c]
  119. l/asa4/ese3/oso0[:c]
  120. l/asa4/ese3/sss$[:c]
  121. l/asa4/lsl1/oso0[:c]
  122. l/asa4/lsl1/sss$[:c]
  123. l/asa4/oso0/sss$[:c]
  124. l/ese3/lsl1/oso0[:c]
  125. l/ese3/lsl1/sss$[:c]
  126. l/ese3/oso0/sss$[:c]
  127. l/lsl1/oso0/sss$[:c]
  128. l/asa4/ese3/lsl1/oso0[:c]
  129. l/asa4/ese3/lsl1/sss$[:c]
  130. l/asa4/ese3/oso0/sss$[:c]
  131. l/asa4/lsl1/oso0/sss$[:c]
  132. l/ese3/lsl1/oso0/sss$[:c]
  133. l/asa4/ese3/lsl1/oso0/sss$[:c]
  134. # Now to the prefix stuff...
  135. l^[1a-z2-90A-Z"-/:-@\[-`{-~]
  136. <9(?a[lc]^e^h^[tT]
  137. <9(?a[lc]^y^m^[aA]
  138. <9(?a[lc]^r^[mdMD]
  139. <9(?a[lc]^.^r^[mdMD]
  140. <9(?a[lc]^_^_
  141. <-!?Alp^[240-9]
  142. # Some word pair rules...
  143. # johnsmith -> JohnSmith, johnSmith
  144. (?a2(?ac1[cl]
  145. # JohnSmith -> john smith, john_smith, john-smith
  146. 1<-$[ _\-]+l
  147. # JohnSmith -> John smith, John_smith, John-smith
  148. 1<-(?ac$[ _\-]2l
  149. # JohnSmith -> john Smith, john_Smith, john-Smith
  150. 1<-l$[ _\-]2(?ac
  151. # johnsmith -> John Smith, John_Smith, John-Smith
  152. 1<-(?ac$[ _\-]2(?ac
  153. # Applying different simple rules to each of the two words
  154. 1[ur]2l
  155. 2(?ac1[ur]
  156. 1l2[ur]
  157. 1(?ac2[ur]
  158. # jsmith -> smithj, etc...
  159. (?a[lc][{}]
  160. (?a[lc]}}
  161. (?a[lc]{{
  162. # Deleting chars...
  163. D[1-7]Q
  164. D[1-7]Q/?ul
  165. D[1-7]Q(?ac
  166. # Inserting a dot...
  167. >3(?a[lc]i[12].
  168. # More suffix stuff...
  169. <-l$[19]$[0-9]
  170. <-(?ac$[19]$[0-9]
  171. <-l$6$9
  172. <-(?ac$6$9
  173. <-l$[72]$[0-9]
  174. <-(?ac$[72]$[0-9]
  175. <*(?a[lc]$[A-Z]
  176. # cracking -> CRACKiNG
  177. u/IsIi
  178. # Crack96 -> cRACK96
  179. CQ
  180. # Crack96 -> cRACK(^
  181. SQ
  182. # Crack96 -> CRaCK96
  183. /?vVQ
  184. # Really weird charset conversions, like "england" -> "rmh;smf"
  185. :[RL]Q
  186. lQ[RL]
  187. (?acQ[RL]
  188. RRQ
  189. LLQ
  190. # Both prefixing and suffixing...
  191. <-l^1$1
  192. <-l^!$!
  193. <-l^@$@
  194. <-l^#$#
  195. <-l^$$$
  196. <-l^%$%
  197. <-l^^$^
  198. <-l^&$&
  199. <-l^*$*
  200. <-l^($)
  201. <-l^-$-
  202. <-l^=$=
  203. <-l^_$_
  204. <-l^+$+
  205. <-l^.$.
  206. <-l^?$?
  207. <-l^{$}
  208. <-l^\[$]
  209. <-l^<$>
  210. <-l^|$|
  211. <-l^:$:
  212. <-l^'$'
  213. <-l^"$"
  214. # The rest of two-digit suffix stuff, rare numbers...
  215. <-l$6$[0-8]
  216. <-(?ac$6$[0-8]
  217. <-l$[3-580]$[0-9]
  218. <-(?ac$[3-580]$[0-9]
  219. # Some three-digit numbers...
  220. (?a[lc]$0<-$0$7
  221. (?a[lc]$1<-$1$1
  222. (?a[lc]$1<-$2$3
  223. (?a[lc]$2<-$2$2
  224. (?a[lc]$3<-$3$3
  225. (?a[lc]$4<-$4$4
  226. (?a[lc]$5<-$5$5
  227. (?a[lc]$6<-$6$6
  228. (?a[lc]$7<-$7$7
  229. (?a[lc]$8<-$8$8
  230. (?a[lc]$9<-$9$9
  231. # Some [birth] years...
  232. l$1<-$9$[7-90-6]>-
  233. l$1$9<-$[7-90-6]$[0-9]
  234. # Uncomment the following lines if you're really crazy
  235. ;# Insert/overstrike some characters...
  236. ;!?Ali[1-6][a-z]
  237. ;!?Alo[0-7][a-z]
  238. ;# Very slow stuff...
  239. ;l$[1-90]<-$[0-9]$[0-9]
  240. ;(?ac$[1-90]<-$[0-9]$[0-9]
  241. ;<-l$[a-z]$[a-z]
  242. ;<9l^[a-z]^[a-z]
  243. ;<-l^[a-z]$[a-z]
  244.  
  245. # Wordlist mode rules
  246. [List.Rules:Wordlist]
  247. # Try words as they are
  248. :
  249. # Lowercase every pure alphanumeric word
  250. >3!?XlQ
  251. # Capitalize every pure alphanumeric word
  252. >2(?a!?XcQ
  253. # Lowercase and pluralize pure alphabetic words
  254. <*>2!?Alp
  255. # Lowercase/capitalize pure alphabetic words and append '1'
  256. <*>2!?A[lc]$1
  257. # Duplicate reasonably short pure alphabetic words (fred -> fredfred)
  258. <7>1!?Ald
  259. # Lowercase and reverse pure alphabetic words
  260. >3!?AlMrQ
  261. # Prefix pure alphabetic words with '1'
  262. >2!?Al^1
  263. # Uppercase pure alphanumeric words
  264. >2!?XuQ
  265. # Lowercase pure alphabetic words and append a digit or simple punctuation
  266. <*>2!?Al$[2!37954860.?]
  267. # Words containing punctuation, which is then squeezed out, lowercase
  268. /?p@?p>3l
  269. # Words with vowels removed, lowercase
  270. /?v@?v>3l
  271. # Words containing whitespace, which is then squeezed out, lowercase
  272. /?w@?w>3l
  273. # Capitalize and duplicate short pure alphabetic words (fred -> FredFred)
  274. <7>1!?Acd
  275. # Capitalize and reverse pure alphabetic words (fred -> derF)
  276. <+>2!?Acr
  277. # Reverse and capitalize pure alphabetic words (fred -> Derf)
  278. >2!?AMrQc
  279. # Lowercase and reflect pure alphabetic words (fred -> fredderf)
  280. <7>1!?AlMrQrf
  281. # Uppercase the last letter of pure alphabetic words (fred -> freD)
  282. <+>2!?AMrQcr
  283. # Prefix pure alphabetic words with '2' or '4'
  284. >2!?Al^[24]
  285. # Capitalize pure alphabetic words and append a digit or simple punctuation
  286. <*>2!?Ac$[2!3957468.?0]
  287. # Prefix pure alphabetic words with digits
  288. >2!?Al^[379568]
  289. # Capitalize and pluralize pure alphabetic words of reasonable length
  290. <*>2!?Acp
  291. # Lowercase/capitalize pure alphabetic words of reasonable length and convert:
  292. # crack -> cracked, crack -> cracking
  293. <*>2!?A[lc][PI]
  294.  
  295. # Incremental modes
  296. [Incremental:All]
  297. File = ~/all.chr
  298. MinLen = 0
  299. MaxLen = 8
  300. CharCount = 95
  301. Extra = {}
  302.  
  303. [Incremental:Alpha]
  304. File = ~/alpha.chr
  305. MinLen = 1
  306. MaxLen = 8
  307. CharCount = 26
  308.  
  309. [Incremental:Digits]
  310. File = ~/digits.chr
  311. MinLen = 1
  312. MaxLen = 8
  313. CharCount = 10
  314.  
  315. # Some pre-defined word filters
  316. [List.External:Filter_Alpha]
  317. void filter()
  318. {
  319.     int i, c;
  320.  
  321.     i = 0;
  322.     while (c = word[i++])
  323.     if (c < 'a' || c > 'z') {
  324.         word = 0; return;
  325.     }
  326. }
  327.  
  328. [List.External:Filter_Digits]
  329. void filter()
  330. {
  331.     int i, c;
  332.  
  333.     i = 0;
  334.     while (c = word[i++])
  335.     if (c < '0' || c > '9') {
  336.         word = 0; return;
  337.     }
  338. }
  339.  
  340. # Useful external mode example
  341. [List.External:Double]
  342. /*
  343.  * This cracking mode tries all the possible duplicated lowercase alphabetic
  344.  * "words" of up to 8 characters long. Since word halves are the same, it
  345.  * only has to try about 500,000 words.
  346.  */
  347.  
  348. /* Global variables: current length and word */
  349. int length, current[9];
  350.  
  351. /* Called at startup to initialize the global variables */
  352. void init()
  353. {
  354.     int i;
  355.  
  356.     i = length = 2;            // Start with 4 character long words
  357.     while (i--) current[i] = 'a';    // Set our half-word to "aa"
  358. }
  359.  
  360. /* Generates a new word */
  361. void generate()
  362. {
  363.     int i;
  364.  
  365. /* Export last generated word, duplicating it at the same time; here "word"
  366.  * is a pre-defined external variable. */
  367.     word[(i = length) << 1] = 0;
  368.     while (i--) word[length + i] = word[i] = current[i];
  369.  
  370. /* Generate a new word */
  371.     i = length - 1;            // Start from the last character
  372.     while (++current[i] > 'z')    // Try to increase it
  373.     if (i)                // Overflow here, any more positions?
  374.         current[i--] = 'a';    // Yes, move to the left, and repeat
  375.     else {                // No
  376.         current = 0;        // Request a length switch
  377.         break;            // Break out of the loop
  378.     }
  379.  
  380. /* Switch to the next length, unless we were generating 8 character long
  381.  * words already. */
  382.     if (!current && length < 4) {
  383.         i = ++length;
  384.         while (i--) current[i] = 'a';
  385.     }
  386. }
  387.  
  388. /* Called when restoring an interrupted session */
  389. void restore()
  390. {
  391.     int i;
  392.  
  393. /* Import the word back */
  394.     i = 0;
  395.     while (current[i] = word[i]) i++;
  396.  
  397. /* ...and calculate the half-word length */
  398.     length = i >> 1;
  399. }
  400.  
  401. # Simple parallel processing example
  402. [List.External:Parallel]
  403. /*
  404.  * This word filter makes John process some of the words only, for running
  405.  * multiple instances on different CPUs. It can be used with any cracking
  406.  * mode except for "single crack". Note: this is not a good solution, but
  407.  * is just an example of what can be done with word filters.
  408.  */
  409.  
  410. int node, total;            // This node's number, and node count
  411. int number;                // Current word number
  412.  
  413. void init()
  414. {
  415.     node = 1; total = 2;        // Node 1 of 2, change as appropriate
  416.     number = node - 1;        // Speedup the filter a bit
  417. }
  418.  
  419. void filter()
  420. {
  421.     if (number++ % total)        // Word for a different node?
  422.         word = 0;        // Yes, skip it
  423. }
  424.